#pragma once

#include "Operator.h"


class VFVProblem;



namespace libMesh
{
	class Elem;
}

using namespace libMesh;

class ElementalLoopOperator : public Operator
{
public:
	ElementalLoopOperator(VFVProblem& vfv_problem);
	virtual ~ElementalLoopOperator();

	virtual void pre() override;
	virtual void execute() override;
	virtual void post() override;

	virtual void onElem(const Elem* elem) {};
	virtual void onSide(const Elem* elem, unsigned int iside) {};

protected:
	VFVProblem& _vfv_problem;
};

